package main

import (
	"fmt"
	"math"
)

// 常量
const pi = 3.14

// 创建多个常量
const (
	statusOK = 200
	notFound = 404
)

// 批量声明常量时，如果某一行没有赋值，则表示和上一行一致
const (
	a = 1
	b
)

// iota 常量计数器，只能在常量的表达式中使用，
// iota 在每遇到一个 const 关键字时值会重置为 0；iota 在每一行常量声明时会使iota计数一次
// iota可理解为 const 语句块中的行索引，从0开始；在定义枚举时非常有用
const (
	ia1 = iota // 0
	ia2 = iota // 1
	ia3        // 2
)

const (
	ib1 = iota // 0
	ib2        // 1
	_          // 忽略
	ib3        // 2
)

// 插队
const (
	ic1 = iota // 0
	ic2 = 100  // 100
	ic3 = iota // 2
	ic4        // 3
)

// 多个常量声明在一行
const (
	id1, id2 = iota + 1, iota + 2 // 1,2
	id3, id4 = iota + 1, iota + 2 // 2,3
)

// 定义数量级
const (
	_  = iota             // 忽略
	kb = 1 << (10 * iota) // 1左移10位，即2的10次方 = 1024
	mb = 1 << (10 * iota) // 1左移20位，即2的20次方 = 1048576
	gb = 1 << (10 * iota)
	tb = 1 << (10 * iota)
	pb = 1 << (10 * iota)
	eb = 1 << (10 * iota)
	zb = 1 << (10 * iota)
)

func main() {
	// 输出常量
	fmt.Println(a)
	fmt.Println(b)

	fmt.Println(ia1, ia2, ia3)

	fmt.Println("ib的值:", ib1, ib2, ib3)
	fmt.Println("ic的值:", ic1, ic2, ic3, ic4)
	fmt.Println("id的值:", id1, id2, id3, id4)

	fmt.Println("容量的值:", kb, mb, gb, tb, pb, eb)

	fmt.Println("最大浮点数值：", math.MaxFloat32)

}
